package cn.ahaiahaixx.service.impl;

import java.text.SimpleDateFormat;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import cn.ahaiahaixx.dao.TbTokenDAO;
import cn.ahaiahaixx.dao.UtilsDAO;
import cn.ahaiahaixx.service.TaskService;

/**
 * 定时任务服务实现,service层是dao层和controller层的中间层，负责处理业务逻辑
 * Scheduled注解是将方法编注为定时启动，initialDelay表示第一次启动延时，fixedDelay表示执行的间隔 cron表示在指定时间点执行
 * 秒(0~59) 分钟(0~59) 小时(0~23) 天月(0~11) 天(星期) (1~7) 年份(1970~2018)
 * 
 * @author Aiden Pearce
 *
 */
@Service
public class TaskServiceImpl implements TaskService {

	private static final Logger LOG = LoggerFactory.getLogger(TaskServiceImpl.class);
	@Autowired
	private UtilsDAO utilsDAO;
	@Autowired
	private TbTokenDAO tbTokenDAO;
	private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	@Scheduled(initialDelay = 1000 * 5, fixedDelay = 600 * 1000)
	@Override
	public void showTime() {
		LOG.debug(String.format("数据库当前时间：%s", SDF.format(utilsDAO.queryTime())));
	}

	@Scheduled(cron = "0 15 9 * * ?")
	@Override
	public void showTimeOnce() {
		LOG.debug(String.format("整点报时:%s", SDF.format(utilsDAO.queryTime())));
	}

	@Override
	@Scheduled(initialDelay = 3 * 1000, fixedDelay = 5 * 60 * 1000)
	public void deleteToken(){
		LOG.debug("正在启动删除过期token任务");
		int result;
		try {
			result =tbTokenDAO.deleteToken();
		} catch (Exception e) {
			LOG.error("删除过期token发送错误",e);
			result=0;
		}

        LOG.debug("删除过期任务完成"+result);
        
	}

}
